package gptma.bo.services.task;

import gptma.bo.model.employee.Employee;
import gptma.bo.model.request.RequestType;
import gptma.bo.model.task.Assignment;
import gptma.bo.model.task.Imputation;
import gptma.bo.model.task.Task;
import gptma.bo.model.task.TaskHistoryElement;
import gptma.bo.search.TaskSearchCriteria;

import java.util.Date;
import java.util.List;

import javax.ejb.Local;

@Local
public interface TaskServices {

	List<Task> findAll();

	List<Task> findNonAttached();

	void updateTaskAndDependencies(Task task, TaskHistoryElement historyElement);

	void saveTask(Task task);

	List<Assignment> findAssignments(Task task, Employee employee);

	List<Task> findByCriteria(TaskSearchCriteria criteria);

	List<String> getAllStatus();

	List<String> getTaskTypeForRequest(RequestType type);

	List<Float> getAllowedCharges();

	List<Task> findNonAssigned();

	float findConsolidatedCharge(Task task);

	float findConsolidatedCharge(Task task, Date date);

	int findMaxPriority();

	boolean findExistingCode(String code);

	List<Imputation> findImputation(Task task);

	float getCurrentEtc(Task task);

}
